#
#  Copyright 2019 The FATE Authors. All Rights Reserved.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
from pydantic import BaseModel
from typing import Optional, Dict, List, Literal


class DataSpec(BaseModel):
    name: str
    description: str
    category: str
    dataFormat: List[str]


class BFIAComponentSpec(BaseModel):
    componentName: str
    title: str
    provider: str
    version: str
    description: str
    roleList: List[Literal["guest", "host", "arbiter", "local"]]
    desVersion: str
    storageEngine: List[str]
    inputParam: Optional[List[Dict]]
    inputData: Optional[List[DataSpec]]
    outputData: Optional[List[DataSpec]]
